package ar.edu.utn.frba.tacs.warnes.rest;

import java.util.List;

import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Response;

import ar.edu.utn.frba.tacs.warnes.entities.Auto;
import ar.edu.utn.frba.tacs.warnes.utils.ContenedorWarnes;

/**
 * 
 * @author Diego
 * 
 */
@Path("/autos/")
@Produces("application/xml")
public class AutosResource {

	public AutosResource() {
	}

	/**
	 * Obtiene la lista de autos
	 * 
	 * @return
	 */
	@GET
	public List<Auto> getAutos() {
		return ContenedorWarnes.getInstance().getAutos();
	}

	/**
	 * Obtiene un unico auto
	 * 
	 * @param id
	 * @return
	 */
	@GET
	@Path("/autos/{id}")
	@Produces("application/xml")
	public Auto getAuto(@PathParam("id") Long id) {
		return ContenedorWarnes.getInstance().getAuto(id);
	}

	/**
	 * Actualiza un auto determinado
	 * 
	 * @param id
	 * @param auto
	 * @return
	 */
	@PUT
	@Path("/autos/{id}")
	@Consumes("application/xml")
	public Response updateAuto(@PathParam("id") Long id, Auto auto) {
		Auto autoViejo = ContenedorWarnes.getInstance().getAuto(id);
		autoViejo.setAnio(auto.getAnio());
		autoViejo.setFechaDesguace(auto.getFechaDesguace());
		autoViejo.setModelo(auto.getModelo());
		autoViejo.setPatente(auto.getPatente());
		return null;
	}

	/**
	 * Crea un nuevo auto
	 * 
	 * @param auto
	 * @return
	 */
	@POST
	@Path("/autos")
	public Response addAuto(Auto auto) {
		ContenedorWarnes.getInstance().creaUnAuto(auto.getPatente());
		return null;
	}

	/**
	 * Borra el auto indicado
	 * 
	 * @param id
	 * @return
	 */
	@DELETE
	@Path("/autos/{id}/")
	public Response deleteAuto(@PathParam("id") Long id) {
		ContenedorWarnes.getInstance().borrarAuto(id);
		return null;
	}

}
